package de.tudarmstadt.gdi1.project.cipher.substitution;

/**@author Samir
 * 
 * 
 * General Interface for all Substitution Ciphers. Substitution cyphers encrypt
 * and decrypt text by substituting single characters.
 * 
 */
public abstract class SubstitutionCipher_IMP implements SubstitutionCipher {

	
	
	
	@Override
	public final String encrypt(String text) {
		
		char [] encrypted = new char[text.length()]; //char namens encrypted wird erstellt mit der Textlänge
		
		for (int i = 0; i < text.length(); i++) { //i steht für eine Stelle im Text
			
			encrypted[i] = translate(text.charAt(i), i); //die Methode translate wird auf den Text an folgendem i angewendet.
														 //translatet erwartet ein char und einen int wert
			
		
		}
		
		
		return new String(encrypted);		//es wird ein String erzeugt der alle Buchstaben vom plaintext ins chiffre übersetzt hat
	}
	@Override
	public String decrypt(String text) {			//selbe prozedur wie encrypt nur, dass natürlich hier entschlüsselt statt verschlüsselt wird
		
		char [] decrypted = new char[text.length()];
		
		for (int i = 0; i <text.length(); i++) {
		
			decrypted[i] = translate(text.charAt(i), i);
			
			
			
		}	
			
		
		return new String(decrypted);
		

	
}
	//definierung der abstrakten methoden, die später in monoalphabeticCipher geerbt werden

	abstract public char translate(char chr, int i);			
	abstract public char reverseTranslate(char chr, int i);
	
	
}












	
